package com.sfpay.coreplatform.order.valueobject.tmo;

import java.util.Date;

 
import com.sfpay.coreplatform.order.common.enums.CcyType;
import com.sfpay.coreplatform.order.common.enums.OptType;
import com.sfpay.coreplatform.order.common.enums.SourcesCode;
import com.sfpay.coreplatform.order.common.enums.tradeStatus;
import com.sfpay.coreplatform.order.common.enums.OrderType;
import com.sfpay.coreplatform.order.common.enums.PayAcctType;
import com.sfpay.coreplatform.order.common.enums.PayType;
import com.sfpay.coreplatform.order.common.enums.RemitMethod; 
 

 

/**
 * 类说明：支付订单model
 * <p>
 * 详细描述：Table:PAY_ORDER
 * @author 307063
 * CreateDate: 2012-2-4
 */
public class PayOrder implements java.io.Serializable{
	
	private static final long serialVersionUID = -8045033829506962020L;

	/**
	 * 支付订单号
	 */
	private String payNo ;
	
	/**
	 * 交易订单号
	 */
	private String orderNo ;
	
	/**
	 * 业务流程 号
	 */
	private String businessSn;
	
	/**
	 * 订单类型 {@link com.sfpay.order.enums.OrderType}
	 */
	private OrderType orderType;
	
	/**
	 * 业务来源
	 */
	private SourcesCode businessSource;
	
	/**
	 * 支付来源
	 */
	private SourcesCode paySource;
	
	 
	
	/**
	 * 支付类型
	 * {@link com.sfpay.order.enums.PayType}
	 */
	private PayType payType ;
	
	/**
	 * 支付金额
	 */
	private Long payAmt ;
	
	/**
	 * 支付状态
	 * {@link com.sfpay.tradeStatus.enums.OrderStatus}
	 */
	private tradeStatus payStatus ;
	
	 
	/**
	 * 交易汇率
	 */
	private Long exchangeRate ;
	
	/**
	 * 交易记账编号
	 */
	private String tradeTallyCode ;
	
	/**
	 * 支付记账编号
	 */
	private String payTallyCode ;
	
	/**
	 * 付款方交易币种
	 */
	private CcyType payerCcy ;
	
	/**
	 * 付款方会员编号
	 */
	private Long payerMemberNo;
	
	/**
	 * 付款方账户类型  
	 * {@link com.sfpay.order.enums.PayAcctType}
	 */
	private PayAcctType payerAcctType ;
	
	/**
	 * 付款方机构编码
	 */
	private String payerOrgCode;
	
	/**
	 * 付款方分支机构
	 */
	private String payerBranchCode;
	
	/**
	 * 付款方卡号
	 */
	private String payerCardNo;
	
	/**
	 * 付款方持卡人姓名
	 */
	private String payerCardName;
	
	/**
	 * 付款方账户编号
	 */
	private Long payerAcctNo;
	
	/**
	 * 付款方手续费
	 */
	private Long payerFee;
	
	/**
	 * 收款方交易币种
	 */
	private CcyType payeeCcy ;
	
	/**
	 * 收款方会员编号
	 */
	private Long payeeMemberNo;
	
	/**
	 * 收款方账户类型  
	 * {@link com.sfpay.order.enums.PayAcctType}
	 */
	private PayAcctType payeeAcctType ;
	
	/**
	 * 收款方机构编码
	 */
	private String payeeOrgCode;
	
	/**
	 * 收款方分支机构
	 */
	private String payeeBranchCode;
	
	/**
	 * 收款方卡号
	 */
	private String payeeCardNo;
	
	/**
	 * 收款方持卡人姓名
	 */
	private String payeeCardName;
	
	/**
	 * 收款方账户编号
	 */
	private Long payeeAcctNo;
	
	/**
	 * 收款方手续费
	 */
	private Long payeeFee;
		
	/**
	 * 开始时间
	 */
	private Date beginTime ;
	
	/**
	 * 结束时间
	 */
	private Date endTime ;

	/**
	 * 操作类型
	 * {@link com.sfpay.order.enums.OptType}
	 */
	private OptType optType;
	
 

	/**
	 * 收单编号
	 */
	private String collectNo ;
	
	/**
	 * 汇款方式
	 * {@link com.sfpay.order.enums.RemitMethod}
	 */
	private RemitMethod remitMethod;
	
	/**
	 * 请求地址 
	 */
	private String requestIp;
	
	/**
	 * 支付信息
	 */
	private String payInfo;
	
	/**
	 *  备注	 
	 */
	private String remark;
	
	
	public PayOrder(){
		
	}
	
	public PayOrder(PayType payType, Long payAmt, tradeStatus payStatus,
			 Long exchangeRate, String tradeTallyCode,
			String payTallyCode, CcyType payerCcy, Long payerMemberNo,
			PayAcctType payerAcctType, String payerOrgCode,
			String payerBranchCode, String payerCardNo, String payerCardName,
			Long payerAcctNo, Long payerFee, CcyType payeeCcy,
			Long payeeMemberNo, PayAcctType payeeAcctType, String payeeOrgCode,
			String payeeBranchCode, String payeeCardNo, String payeeCardName,
			Long payeeAcctNo, Long payeeFee, OptType optType,
			RemitMethod remitMethod, String requestIp) {
		this.payType = payType;
		this.payAmt = payAmt;
		this.payStatus = payStatus;		 	 
		this.exchangeRate = exchangeRate;
		this.tradeTallyCode = tradeTallyCode;
		this.payTallyCode = payTallyCode;
		this.payerCcy = payerCcy;
		this.payerMemberNo = payerMemberNo;
		this.payerAcctType = payerAcctType;
		this.payerOrgCode = payerOrgCode;
		this.payerBranchCode = payerBranchCode;
		this.payerCardNo = payerCardNo;
		this.payerCardName = payerCardName;
		this.payerAcctNo = payerAcctNo;
		this.payerFee = payerFee;
		this.payeeCcy = payeeCcy;
		this.payeeMemberNo = payeeMemberNo;
		this.payeeAcctType = payeeAcctType;
		this.payeeOrgCode = payeeOrgCode;
		this.payeeBranchCode = payeeBranchCode;
		this.payeeCardNo = payeeCardNo;
		this.payeeCardName = payeeCardName;
		this.payeeAcctNo = payeeAcctNo;
		this.payeeFee = payeeFee;
		this.optType = optType;
		this.remitMethod = remitMethod;
		this.requestIp = requestIp;
	}

	 

	public String getPayNo() {
		return payNo;
	}

	public void setPayNo(String payNo) {
		this.payNo = payNo;
	}

	public String getOrderNo() {
		return orderNo;
	}

	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}
	
	 

	/**
	 * 支付类型：{@link com.sfpay.order.enums.PayType}
	 * @return
	 */
	public PayType getPayType() {
		return payType;
	}

	/**
	 * 支付类型：{@link com.sfpay.order.enums.PayType}
	 * @param payType
	 */
	public void setPayType(PayType payType) {
		this.payType = payType;
	}

	public Long getPayAmt() {
		return payAmt;
	}

	public void setPayAmt(Long payAmt) {
		this.payAmt = payAmt;
	}

	/**
	 * 支付状态：{@link com.sfpay.tradeStatus.enums.OrderStatus}
	 * @return
	 */
	public tradeStatus getPayStatus() {
		return payStatus;
	}

	/**
	 * 支付状态：{@link com.sfpay.tradeStatus.enums.OrderStatus}
	 * @param payStatus
	 */
	public void setPayStatus(tradeStatus payStatus) {
		this.payStatus = payStatus;
	}
 
	public Long getExchangeRate() {
		return exchangeRate;
	}

	public void setExchangeRate(Long exchangeRate) {
		this.exchangeRate = exchangeRate;
	}

	public String getTradeTallyCode() {
		return tradeTallyCode;
	}

	public void setTradeTallyCode(String tradeTallyCode) {
		this.tradeTallyCode = tradeTallyCode;
	}

	public String getPayTallyCode() {
		return payTallyCode;
	}

	public void setPayTallyCode(String payTallyCode) {
		this.payTallyCode = payTallyCode;
	}

	public CcyType getPayerCcy() {
		return payerCcy;
	}

	public void setPayerCcy(CcyType payerCcy) {
		this.payerCcy = payerCcy;
	}
	
	public Long getPayerMemberNo() {
		return payerMemberNo;
	}

	public void setPayerMemberNo(Long payerMemberNo) {
		this.payerMemberNo = payerMemberNo;
	}

	/**
	 * 付款方账户类型：{@link com.sfpay.order.enums.PayAcctType}
	 * @return
	 */
	public PayAcctType getPayerAcctType() {
		return payerAcctType;
	}

	/**
	 * 付款方账户类型：{@link com.sfpay.order.enums.PayAcctType}
	 * @param payerAcctType
	 */
	public void setPayerAcctType(PayAcctType payerAcctType) {
		this.payerAcctType = payerAcctType;
	}

	public String getPayerOrgCode() {
		return payerOrgCode;
	}

	public void setPayerOrgCode(String payerOrgCode) {
		this.payerOrgCode = payerOrgCode;
	}

	public String getPayerBranchCode() {
		return payerBranchCode;
	}

	public void setPayerBranchCode(String payerBranchCode) {
		this.payerBranchCode = payerBranchCode;
	}

	public String getPayerCardNo() {
		return payerCardNo;
	}

	public void setPayerCardNo(String payerCardNo) {
		this.payerCardNo = payerCardNo;
	}

	public String getPayerCardName() {
		return payerCardName;
	}

	public void setPayerCardName(String payerCardName) {
		this.payerCardName = payerCardName;
	}

	public Long getPayerAcctNo() {
		return payerAcctNo;
	}

	public void setPayerAcctNo(Long payerAcctNo) {
		this.payerAcctNo = payerAcctNo;
	}

	public Long getPayerFee() {
		return payerFee;
	}

	public void setPayerFee(Long payerFee) {
		this.payerFee = payerFee;
	}

	public CcyType getPayeeCcy() {
		return payeeCcy;
	}

	public void setPayeeCcy(CcyType payeeCcy) {
		this.payeeCcy = payeeCcy;
	}

	public Long getPayeeMemberNo() {
		return payeeMemberNo;
	}

	public void setPayeeMemberNo(Long payeeMemberNo) {
		this.payeeMemberNo = payeeMemberNo;
	}

	/**
	 * 收款方账户类型：{@link com.sfpay.order.enums.PayAcctType}
	 * @return
	 */
	public PayAcctType getPayeeAcctType() {
		return payeeAcctType;
	}

	/**
	 * 收款方账户类型：{@link com.sfpay.order.enums.PayAcctType}
	 * @param payeeAcctType
	 */
	public void setPayeeAcctType(PayAcctType payeeAcctType) {
		this.payeeAcctType = payeeAcctType;
	}

	public String getPayeeOrgCode() {
		return payeeOrgCode;
	}

	public void setPayeeOrgCode(String payeeOrgCode) {
		this.payeeOrgCode = payeeOrgCode;
	}

	public String getPayeeBranchCode() {
		return payeeBranchCode;
	}

	public void setPayeeBranchCode(String payeeBranchCode) {
		this.payeeBranchCode = payeeBranchCode;
	}

	public String getPayeeCardNo() {
		return payeeCardNo;
	}

	public void setPayeeCardNo(String payeeCardNo) {
		this.payeeCardNo = payeeCardNo;
	}

	public String getPayeeCardName() {
		return payeeCardName;
	}

	public void setPayeeCardName(String payeeCardName) {
		this.payeeCardName = payeeCardName;
	}

	public Long getPayeeAcctNo() {
		return payeeAcctNo;
	}

	public void setPayeeAcctNo(Long payeeAcctNo) {
		this.payeeAcctNo = payeeAcctNo;
	}

	public Long getPayeeFee() {
		return payeeFee;
	}

	public void setPayeeFee(Long payeeFee) {
		this.payeeFee = payeeFee;
	}

	public Date getBeginTime() {
		return beginTime;
	}

	public void setBeginTime(Date beginTime) {
		this.beginTime = beginTime;
	}

	public Date getEndTime() {
		return endTime;
	}

	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}
	
	/**
	 * 操作类型：{@link com.sfpay.order.enums.OptType}
	 * @return
	 */
	public OptType getOptType() {
		return optType;
	}

	/**
	 * 操作类型，默认为OptType.PAY ：{@link com.sfpay.order.enums.OptType}
	 * @param optType
	 */
	public void setOptType(OptType optType) {
		if(null == optType){
			this.optType = OptType.PAY;
		} else {
			this.optType = optType;
		}
	}

	 

	public String getCollectNo() {
		return collectNo;
	}

	public void setCollectNo(String collectNo) {
		this.collectNo = collectNo;
	}

	/**
	 * 方法说明：汇款方式  {@link com.sfpay.order.enums.RemitMethod}
	 * @return
	 */
	public RemitMethod getRemitMethod() {
		return remitMethod;
	}

	/**
	 * 方法说明：汇款方式  {@link com.sfpay.order.enums.RemitMethod}
	 * @param remitMethod
	 */
	public void setRemitMethod(RemitMethod remitMethod) {
		if(null == remitMethod){
			this.remitMethod = RemitMethod.COMMON;
		} else {
			this.remitMethod = remitMethod;
		}
	}

	public String getRequestIp() {
		return requestIp;
	}

	public void setRequestIp(String requestIp) {
		this.requestIp = requestIp;
	}

	public String getPayInfo() {
		return payInfo;
	}

	public void setPayInfo(String payInfo) {
		this.payInfo = payInfo;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public String getBusinessSn() {
		return businessSn;
	}

	public void setBusinessSn(String businessSn) {
		this.businessSn = businessSn;
	}

	public OrderType getOrderType() {
		return orderType;
	}

	public void setOrderType(OrderType orderType) {
		this.orderType = orderType;
	}

	public SourcesCode getPaySource() {
		return paySource;
	}

	public void setPaySource(SourcesCode paySource) {
		this.paySource = paySource;
	}

	public SourcesCode getBusinessSource() {
		return businessSource;
	}

	public void setBusinessSource(SourcesCode businessSource) {
		this.businessSource = businessSource;
	}

	
}
